/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package BD;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.*;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author ARMGARCES
 */
@Entity
@Table(name = "proveedor")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Proveedor.findAll", query = "SELECT p FROM Proveedor p"),
    @NamedQuery(name = "Proveedor.findByIdProveedor", query = "SELECT p FROM Proveedor p WHERE p.idProveedor = :idProveedor"),
    @NamedQuery(name = "Proveedor.findByRif", query = "SELECT p FROM Proveedor p WHERE p.rif = :rif"),
    @NamedQuery(name = "Proveedor.findByNombre", query = "SELECT p FROM Proveedor p WHERE p.nombre = :nombre"),
    @NamedQuery(name = "Proveedor.findByCreado", query = "SELECT p FROM Proveedor p WHERE p.creado = :creado"),
    @NamedQuery(name = "Proveedor.findByDireccion", query = "SELECT p FROM Proveedor p WHERE p.direccion = :direccion")})
public class Proveedor implements Serializable {
    @Basic(optional =     false)
    @Column(name = "rif")
    private String rif;
    @Basic(optional = false)
    @Column(name = "creado")
    @Temporal(TemporalType.TIMESTAMP)
    private Date creado;
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "idProveedor")
    private Integer idProveedor;
    @Basic(optional = false)
    @Column(name = "nombre")
    private String nombre;
    @Column(name = "direccion")
    private String direccion;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "fkidProveedor")
    private List<FacturaMp> facturaMpList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "fkidProveedor")
    private List<InventarioMp> inventarioMpList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "fkidProveedor")
    private List<OrdencompraMp> ordencompraMpList;
    @JoinColumn(name = "fk_idLugar", referencedColumnName = "idLugar")
    @ManyToOne(optional = false)
    private Lugar fkidLugar;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "fkidProveedor")
    private List<CatalogoMp> catalogoMpList;

    public Proveedor() {
    }

    public Proveedor(Integer idProveedor) {
        this.idProveedor = idProveedor;
    }

    public Proveedor(Integer idProveedor, String rif, String nombre, Date creado) {
        this.idProveedor = idProveedor;
        this.rif = rif;
        this.nombre = nombre;
        this.creado = creado;
    }

    public Integer getIdProveedor() {
        return idProveedor;
    }

    public void setIdProveedor(Integer idProveedor) {
        this.idProveedor = idProveedor;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getDireccion() {
        return direccion;
    }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    @XmlTransient
    public List<FacturaMp> getFacturaMpList() {
        return facturaMpList;
    }

    public void setFacturaMpList(List<FacturaMp> facturaMpList) {
        this.facturaMpList = facturaMpList;
    }

    @XmlTransient
    public List<InventarioMp> getInventarioMpList() {
        return inventarioMpList;
    }

    public void setInventarioMpList(List<InventarioMp> inventarioMpList) {
        this.inventarioMpList = inventarioMpList;
    }

    @XmlTransient
    public List<OrdencompraMp> getOrdencompraMpList() {
        return ordencompraMpList;
    }

    public void setOrdencompraMpList(List<OrdencompraMp> ordencompraMpList) {
        this.ordencompraMpList = ordencompraMpList;
    }

    public Lugar getFkidLugar() {
        return fkidLugar;
    }

    public void setFkidLugar(Lugar fkidLugar) {
        this.fkidLugar = fkidLugar;
    }

    @XmlTransient
    public List<CatalogoMp> getCatalogoMpList() {
        return catalogoMpList;
    }

    public void setCatalogoMpList(List<CatalogoMp> catalogoMpList) {
        this.catalogoMpList = catalogoMpList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idProveedor != null ? idProveedor.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Proveedor)) {
            return false;
        }
        Proveedor other = (Proveedor) object;
        if ((this.idProveedor == null && other.idProveedor != null) || (this.idProveedor != null && !this.idProveedor.equals(other.idProveedor))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "BD.Proveedor[ idProveedor=" + idProveedor + " ]";
    }

    public String getRif() {
        return rif;
    }

    public void setRif(String rif) {
        this.rif = rif;
    }

    public Date getCreado() {
        return creado;
    }

    public void setCreado(Date creado) {
        this.creado = creado;
    }
    
}
